﻿using GestionComercial.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GestionComercial.Model.Entities;
using GestionComercial.Data;
namespace GestionComercial.WinUI.Stock
{
    public partial class frmArticuloSearch : Form
    {
        public const int COL_IDARTICULO = 6;

        private Articulo articulo { get; set; }
        private ArticuloData articuloData = new ArticuloData();
        private List<Articulo> listaArticulos { get; set; }

        frmArticuloEdit frm;
        private Operaciones operacion { get; set; }

        public frmArticuloSearch()
        {
            InitializeComponent();
            
        }
        private void frmClienteSearch_Load(object sender, EventArgs e)
        {
            CargarColores();
            CargarIconos();
            CargarGrilla();            
        }
        private void CargarColores()
        {
            panelHeader.BackColor = Constantes.BACK_COLOR_FORM_HEADER;
            panelTool.BackColor = Constantes.BACK_COLOR_FORM_PANEL;

            lblHeader.ForeColor = Constantes.FORE_COLOR_FORM_LABEL;

            ts.BackColor = Constantes.BACK_COLOR_FORM_PANEL;
        }
        private void CargarIconos()
        {
            tsbEditar.Image = Properties.Resources.icoeditar_16.ToBitmap();
            tsbNuevo.Image = Properties.Resources.iconuevo_16.ToBitmap();
            tsbEliminar.Image = Properties.Resources.icoborrar_16.ToBitmap();
        }
        private void CargarGrilla()
        {
            try
            {
                gridListado.Rows.Count = 1;
                listaArticulos = articuloData.CargarTodos();
                if (listaArticulos != null && listaArticulos.Count > 0)
                {
                    gridListado.BeginUpdate();

                    foreach (Articulo item in listaArticulos)
                    {
                        gridListado.AddItem(new Object[] { item.Codigo,
                                                           item.NombreArticulo,
                                                           item.PrecioVenta,
                                                           item.Talle,
                                                           item.Marca.NombreMarca,
                                                           item.Rubro.NombreRubro,
                                                           item.IdArticulo.ToString()
                                                          });
                    }
                    gridListado.EndUpdate();

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
        }
        
       private String FilaGrillaSeleccionada()
        {
                if (gridListado.Row <= 0) 
                    return "";
                String id = gridListado[gridListado.Row, COL_IDARTICULO].ToString();
        
                if (String.IsNullOrEmpty(id))
                    return "";
                else
                    return id;
        }
       private void Nuevo()
       {
           frm = new frmArticuloEdit();
           frm.operacion = Operaciones.ADD;
           frm.ShowDialog();
           CargarGrilla();
       }
       private void Editar()
       {
           if (String.IsNullOrEmpty(FilaGrillaSeleccionada()))
           {
               MessageBox.Show("Seleccione un registro", "Atención", MessageBoxButtons.OK);
               return;
           }
           articulo = articuloData.CargarPorId(new Guid(FilaGrillaSeleccionada()));
           frm = new frmArticuloEdit();
           frm.operacion = Operaciones.EDIT;
           frm.articulo = articulo;
           frm.ShowDialog();
           CargarGrilla();
 
       }
        private void tsbNuevo_Click(object sender, EventArgs e)
        {
            Nuevo();
        }

        private void tsbEditar_Click(object sender, EventArgs e)
        {
            Editar();
        }

        private void tsbEliminar_Click(object sender, EventArgs e)
        {
            
        }


       

    }
}
